package com.itlong.cloud.smartcard.service;


import com.itlong.cloud.POJO.DTO.smartcard.SmartCardGetDeviceInfoDTO;
import com.itlong.cloud.POJO.DTO.smartcard.SmartCardSyncDeviceInfoDTO;
import com.itlong.cloud.POJO.PO.DeviceElevatorFloorConfigPO;
import com.itlong.cloud.POJO.VO.smartcard.*;

import java.util.List;
import java.util.Map;


/**
 * <desc>
 *      一卡通_设备操作数据接口。
 * <desc/>
 *
 * @createDate 2017-12-27.
 */

public interface ISmartCardDeviceInfoService {

    /**
     * <desc>
     *      一卡通保存或更新电梯楼层映射信息
     * <desc/>
     *
     * @param deviceElevatorFloorConfigPO 电梯楼层映射表
     * @return
     * @author LouisLewis
     * @createDate 2017-12-27
     */
    void saveOrUpdatefloorConfig(DeviceElevatorFloorConfigPO deviceElevatorFloorConfigPO) throws Exception;


    /**
     * <desc>
     *      一卡通更新设备信息。
     * <desc/>
     *
     * @param deviceInfoDTO 更新设备信息参数
     * @return
     * @author LouisLewis
     * @createDate 2017-12-27
     */
    Integer updateDeviceInfo(SmartCardSyncDeviceInfoDTO deviceInfoDTO) throws Exception;


    /**
     * <desc>
     *      一卡通_添加设备。
     * <desc/>
     *
     * @param  deviceInfoDTO 设备信息
     * @return
     * @author LouisLewis
     * @createDate 2017-12-27
     */
    Integer addDeviceInfo(SmartCardSyncDeviceInfoDTO deviceInfoDTO) throws Exception;



    /**
     * <desc>
     * 查询一卡通通行记录相关的设备信息.
     * </desc>
     *
     * @param getDeviceInfoDTO 查询条件
     * @return 设备信息
     * @author LewisLouis
     * @createDate 2018-01-23
     */
    List<SmartCardDeviceInfoVO> getDeviceInfos(SmartCardGetDeviceInfoDTO getDeviceInfoDTO) throws Exception;



    /**
     * <desc>
     *      设备变更或电梯楼层对应表变更，按项目需通知更新APP_USR的缓存. （慎用！！！）
     * </desc>
     *
     * @param  projectId 项目Id
     * @return xx
     * @author LewisLouis
     * @createDate 2017-12-29
     */
    void sendMessageForDeviceChanged(String projectId) throws Exception;

    /**
     * <desc>
     *      根据项目编号获取云电梯信息
     * </desc>
     *
     * @param  projectId 项目Id
     * @return 云电梯信息
     * @author Qiang.S
     * @createDate 2019-01-26
     */
    List<SmartCardOldDeviceInfoVO> getCloudElevatorList(String projectId) throws Exception;

    /**
     * <desc>
     *     获取云电梯楼层映射表信息
     * <desc/>
     *
     * @param deviceUnique 设备唯一编号
     * @return
     * @author Qiang.S
     * @createDate 2019-01-26
     */
    SmartCardFloorInfoVO getElevatorFloorConfig(String deviceUnique) throws Exception;

    /**
     * <desc>
     *      一卡通获取楼层映射表
     * </desc>
     *
     * @param deviceUnique
     * @return
     * @author Jiaqi.X
     * @createDate 2019/03/29
     */
    List<SmartCardServerFloorRelationVO> getSmartCardServerFloorRelation(String deviceUnique);

    /**
     * <desc>
     *      检测设备是否存在
     * </desc>
     *
     * @param deviceUnique
     * @return
     * @authro Jiaqi.X
     * @createDate 2019/11/11
     */
    Integer checkDeviceIsOnline(String deviceUnique);

    /**
     * <desc>
     *      获取所有设备
     * </desc>
     *
     * @param projectId
     * @return
     * @createDate 2019/11/25
     * @author Jiaqi.X
     */
    Map<String,Object> getAllDevice(String projectId);
}
